package system

import (
  "go.uber.org/zap"
  "livefind/config"
  "livefind/global"
  "livefind/model/system"
  "livefind/utils"
)

//@author: [piexlmax](https://github.com/piexlmax)
//@function: GetSystemConfig
//@description: 读取配置文件
//@return: err error, conf config.Server

type SystemConfigService struct {
}

func (systemConfigService *SystemConfigService) GetSystemConfig() (err error, conf config.Server) {
  return nil, global.GVA_CONFIG
}

// @description   set system config,
//@author: [piexlmax](https://github.com/piexlmax)
//@function: SetSystemConfig
//@description: 设置配置文件
//@param: system model.System
//@return: err error

func (systemConfigService *SystemConfigService) SetSystemConfig(system system.System) (err error) {
  cs := utils.StructToMap(system.Config)
  for k, v := range cs {
    global.GVA_VP.Set(k, v)
  }
  err = global.GVA_VP.WriteConfig()
  return err
}

//@author: [SliverHorn](https://github.com/SliverHorn)
//@function: GetServerInfo
//@description: 获取服务器信息
//@return: server *utils.Server, err error

func (systemConfigService *SystemConfigService) GetServerInfo() (server *utils.Server, err error) {
  var s utils.Server
  s.Os = utils.InitOS()
  if s.Cpu, err = utils.InitCPU(); err != nil {
    global.GVA_LOG.Error("func utils.InitCPU() Failed", zap.String("err", err.Error()))
    return &s, err
  }
  if s.Rrm, err = utils.InitRAM(); err != nil {
    global.GVA_LOG.Error("func utils.InitRAM() Failed", zap.String("err", err.Error()))
    return &s, err
  }
  if s.Disk, err = utils.InitDisk(); err != nil {
    global.GVA_LOG.Error("func utils.InitDisk() Failed", zap.String("err", err.Error()))
    return &s, err
  }

  return &s, nil
}
